perm filename PANIC.SOS[HAL,HE] blob sn#133579 filedate 1974-12-02 generic text, type T, neo UTF8
00100	COMMENT ⊗   VALID 00007 PAGES
00200	C REC  PAGE   DESCRIPTION
00300	C00001 00001
00400	C00002 00002	.FIGS←TRUE
00500	C00010 00003	.device xgp
00600	C00011 00004	.NEXT PAGE
00700	C00014 00005	.ADJUST COMPACT
00800	C00015 00006	.REQUIRE "MINTRO.PUB" SOURCE_FILE <<MEMO25(2) Introduction>>
00900	C00018 00007	.PORTION CONTENTS
01000	C00022 ENDMK
01100	C⊗;
     

00100	.FIGS←TRUE;
00200	.STD_SPREAD ← 1;
00300	
00400	.<<PUB STATEMENTS>>
00500	
00600	.TURN ON "∞π↑↓[]{_α#←→&∂";
00700	.TURN OFF TAB;
00800	.STD_PREFACE← 2*STD_SPREAD - 1;
00900	.SPREAD ← STD_SPREAD ;
01000	.PREFACE STD_PREFACE ;
01100	.NOFILL; PREFACE SPREAD-1; FILL;
01200	
01300	.MACRO UNFILL ⊂BEGIN NOFILL;TURN OFF "←→";PREFACE SPREAD-1;SKIP 2-SPREAD;GROUP⊃;
01400	.MACRO MATRIX ⊂BEGIN NOFILL PREFACE 0 SKIP SPREAD GROUP⊃
01500	.MACRO REFILL ⊂END; SKIP 2-SPREAD; CONTINUE⊃;
01600	.MACRO MAYBREAK ⊂APART;GROUP;⊃;
01700	.MACRO BULL ⊂ONCE; FLUSH LEFT⊃;
01800	.MACRO REPART ⊂END; SKIP 2-SPREAD; APART⊃;
01900	.MACRO COMT(X) ⊂BEGIN FILL;INDENT X,X;PREFACE 0;}%4{⊃
02000	
02100	.COUNT SECTION FROM 1 TO 99 PRINTING ⊂SECTION⊃;
02200	.COUNT SUBSEC FROM 0 TO 99 IN SECTION PRINTING "!.1";
02300	.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
02400	.COUNT FOOTNOTE INLINE FROM 1 TO 9 IN PAGE;
02500	
02600	.MACRO NEWSEC(TITLE,ID) ⊂
02700	.NEXT SECTION!;
02800	.IF PICLIN≠NULL THEN ALLPIC;
02900	.SECNAME←NULL;
03000	.SSECNAME←NULL;
03100	.SSSNUM←NULL
03200	.NEXT SUBSEC;FIGURE←0;TABLE←0;
03300	.SECNAME←"TITLE";
03400	.SSECNAME←"ID";
03500	.SKIP TO COLUMN 1; BEGIN CENTER;
03600	%5{SECID} {SECTION!}%*
03700	%6{SECNAME}%*
03800	.END
03900	.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
04000	.BEGIN 
04100	.NEXT PAGE
04200	{SECID}→PAGE
04300	.END
04400	
04500	{SECTION!}  TITLE →{PAGE!}
04600	.⊃
04700	.SECNAME←"TITLE";⊃
04800	
04900	
05000	
05100	.MACRO NEWSS(TITLE,ID,LAB) ⊂
05200	.NEXT SUBSEC!;
05300	.IF PICLIN≠NULL THEN ALLPIC;
05400	.SSSNUM←SUBSEC!
05500	.NEXT SUBSUBSEC;
05600	.IF LINES≤10*SPREAD THEN NEXT PAGE ELSE SKIP 4*SPREAD;
05700	.SSECNAME←"ID";
05800	.IF SSECNAME=NULL THEN SSECNAME←"TITLE";
05900	%5{SUBSEC!}      TITLE%*
06000	.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
06100	.BEGIN 
06200	.NEXT PAGE
06300	{SECID}→PAGE
06400	.END
06500	    {SUBSEC!}  TITLE →{PAGE!}
06600	.⊃
06700	.⊃
06800	
06900	.MACRO NEWSSS(TITLE,LAB) ⊂
07000	.NEXT SUBSUBSEC!;
07100	.IF PICLIN≠NULL THEN ALLPIC;
07200	.SSSNUM←SUBSUBSEC!
07300	.IF LINES≤8*SPREAD THEN NEXT PAGE ELSE SKIP 2*SPREAD;
07400	%4{SUBSUBSEC!}     TITLE%*
07500	.BREAK
07600	.SEND CONTENTS ⊂IF LINES<3*SPREAD+1 THEN
07700	.BEGIN 
07800	.NEXT PAGE
07900	{SECID}→PAGE
08000	.END
08100		{SUBSUBSEC!}  TITLE →{PAGE!}
08200	.⊃
08300	.⊃
08400	
08500	
08600	.COUNT EQUATION INLINE IN SECTION PRINTING "!.1"
08700	
08800	.MACRO NEWEQ⊂
08900	.NEXT EQUATION!;TURN ON "→";"→[Eq. ";EQUATION!;"]";TURN OFF "→";⊃
09000	
09100	.MACRO EQREF(LBL)⊂"Equation ";EQUATION! LBL⊃
09200	.MACRO SECREF(LBL)⊂"Chapter ";SECTION! LBL⊃
09300	.MACRO SSREF(LBL)⊂"Section ";SUBSEC! LBL ⊃
09400	.MACRO SSSREF(LBL)⊂"subsection ";SUBSUBSEC! LBL⊃
09500	.MACRO APREF(LBL)⊂"Appendix ";SECTION! LBL⊃
09600	.MACRO FIGREF(LBL)⊂"Figure ";FIGURE   LBL⊃
09700	.MACRO TABREF(LBL)⊂"Table "; LBL⊃
09800	.AT NULL ⊂IF FILLING THEN
09900	.    START BREAK;
10000	.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
10100	.  ELSE SKIP SPREAD⊃;
10200	
10300	.RECURSIVE MACRO STOREPIC(TITLE,LINES,TEMP) ⊂START
10400	.PICLIN←PICLIN&"  "[1 TO 2-LENGTH("LINES")]&"LINES";
10500	.PICNUM←PICNUM&"    "[1 TO 4-LENGTH(TEMP)]&TEMP;
10600	.PICTLEN←PICTLEN&"  "[1 TO 2-LENGTH(LENGTH("TITLE"))]&LENGTH("TITLE");
10700	.PICTIT←PICTIT&"TITLE";
10800	.END⊃
10900	
11000	.MACRO NEWFIG(TITLE,εLINES,LABEL) ⊂
11100	.FIGURE←FIGURE+1; LABEL TEMP←SECTION&"."&FIGURE; }Figure {TEMP;
11200	.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
11300	
11400	.MACRO MAKEFIG(TITLE,εLINES,LABEL) ⊂
11500	.FIGURE←FIGURE+1;LABEL TEMP←SECTION&"."&FIGURE;
11600	.STOREPIC(|TITLE|,LINES,TEMP) ⊃;
11700	
11800	.PICLIN←PICNUM←PICTLEN←PICTIT←NULL
11900	.MACRO SMALLPIC⊂⊃
12000	.MACRO ALLPIC⊂⊃
12100	
12200	.MACRO NEWTABLE(TITLE,LABEL)⊂
12300	.TABLE←TABLE+1; LABEL TEMP←SECTION&"."&TABLE;
12400	.BEGIN NOFILL CENTER GROUP
12500	
12600	Table {TEMP}
12700	
12800	TITLE
12900	.⊃;
13000	
13100	.IF FIGS THEN START
13200	
13300	.MACRO PLACEPIC ⊂BEGIN CENTER PREFACE SPREAD-1
13400	.A←PICLIN[1 TO 2]; B←PICNUM[1 TO 4];
13500	.C←PICTLEN[1 TO 2]; D←PICTIT[1 TO C];
13600	.PICLIN←PICLIN[3 TO ∞]; PICNUM←PICNUM[5 TO ∞];
13700	.PICTLEN←PICTLEN[3 TO ∞]; PICTIT←PICTIT[C+1 TO ∞];
13800	.GROUP SKIP A;
13900	Figure {B}
14000	{D}
14100	.SKIP 2*SPREAD;
14200	.END⊃
14300	
14400	.RECURSIVE MACRO RSPIC ⊂
14500	.IF LINES-3*SPREAD≥PICLIN[1 TO 2] THEN PLACEPIC
14600	.ELSE START
14700	.	TLIN←TLIN&PICLIN[1 TO 2]; PICLIN←PICLIN[3 TO ∞];
14800	.	TNUM←TNUM&PICNUM[1 TO 4]; PICNUM←PICNUM[5 TO ∞];
14900	.	C←PICTLEN[1 TO 2];
15000	.	TTLEN←TTLEN&C; PICTLEN←PICTLEN[3 TO ∞];
15100	.	TTIT←TTIT&PICTIT[1 TO C]; PICTIT←PICTIT[C+1 TO ∞];
15200	.	END;
15300	.IF PICLIN≠NULL THEN RSPIC⊃
15400	
15500	.RECURSIVE MACRO SMALLPIC ⊂
15600	.TLIN←TNUM←TTLEN←TTIT←NULL;
15700	.RSPIC;
15800	.PICLIN←TLIN; PICNUM←TNUM; PICTLEN←TTLEN; PICTIT←TTIT;
15900	.IF LINES<2*SPREAD-1 THEN NEXT PAGE ⊃
16000	
16100	.RECURSIVE MACRO ALLPIC ⊂
16200	.IF PICLIN≠NULL THEN SMALLPIC;;
16300	.IF PICLIN≠NULL THEN BEGIN PLACEPIC; ALLPIC END ⊃
16400	
16500	.AT NULL ⊂IF FILLING THEN
16600	.    START BREAK;
16700	.    IF PICLIN≠NULL THEN SMALLPIC;
16800	.    IF LINES<2*SPREAD+1 THEN NEXT PAGE END
16900	.  ELSE SKIP SPREAD⊃;
17000	
17100	.BEFORE PAGE ⊂STANDARD TITLES;
17200	.    IF PICLIN≠NULL THEN SMALLPIC ⊃
17300	
17400	.END COMMENT PICTURE MACROS;
17500	 
17600	
17700	
17800	
17900	.BOTTOM←50;
18000	.MACRO FULL⊂BOTTOM-3*SPREAD⊃
18100	.MACRO HALF⊂BOTTOM/2-3*SPREAD⊃
18200	.MACRO THIRD⊂BOTTOM/3-3*SPREAD⊃
18300	
18400	.SECNAME←NULL
18500	 
18600	
     

00100	.device xgp
00200	.IF XCRIBL THEN FONT 1 "BASL30[HAL,HE]"
00300	.IF XCRIBL THEN FONT 4 "BASI30[HAL,HE]"
00400	.IF XCRIBL THEN FONT 5 "BASB30"
00500	.IF XCRIBL THEN FONT 6 "BDR40"
00600	.IF XCRIBL THEN FONT 7 "LPT"
00700	
00800	.IF XCRIBL THEN START
00900	.!xgplftmar← 200
01000	.END
01100	.PAGE FRAME 53 HIGH 80 WIDE;
01200	.TITLE AREA HEADING LINES 1 TO 4 CHARS 1 TO 80;
01300	.AREA TEXT LINES 5 TO 53 CHARS 1 TO 80;
01400	.TURN ON "%\"
01500	.TABS 17
01600	.SECID←"CHAPTER";
01700	.SECNAME←NULL
01800	.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
01900	.IF XCRIBL THEN SELECT 1 
02000	
     

00100	.NEXT PAGE
00200	.SSECNAME←NULL;
00300	.PORTION TITLEPAGE
00400	.BEGIN NOFILL;turn on "↑";
00500	.AREA TEXT LINES 1 TO 53 CHARS 1 TO 80
00600	.NEXT PAGE
00700	.GROUP SKIP 1
00800	%1STANFORD ARTIFICIAL INTELLIGENCE LABORATORY →NOVEMBER 1974
00900	MEMO AIM-243
01000	.GROUP SKIP 2
01100	COMPUTER SCIENCE DEPARTMENT
01200	REPORT CS-456
01300	.GROUP SKIP 4
01400	.NOFILL CENTER
01500	%6AL, A Programming System for Automation
01600	.GROUP SKIP 4
01700	%1Raphael Finkel, Russell Taylor, Robert Bolles, Richard Paul, Jerome Feldman↑*
01800	
01900	
02000	.GROUP SKIP 5
02100	.FILL ADJUST COMPACT
02200	.NARROW 8,8
02300	AL is an high-level programming system for specification of manipulatory procedures
02400	such as assembly of an object from parts.  Currently being implemented
02500	as a successor to our WAVE system, AL includes an ALGOL-like source language,
02600	a translator for converting programs into runnable code, and a runtime system
02700	for controlling the manipulators and other devices.  The source language includes
02800	advanced features for describing individual motions of manipulators, for using
02900	sensory information, and for describing describing assembly algorithms in terms
03000	of common domain-specific primitives.
03100	.WIDEN
03200	.NOFILL SKIP TO LINE 37
03300	.FILL
03400	∞_→#
03500	.BREAK
03600	%4↑* Jerome Feldman is now at the University of Rochester.
03700	
03800	This research was supported in part by the
03900	National Science Foundation under contract No. GIα-42906 and in part by
04000	the Advanced Research
04100	Projects Agency of the Office of Defense under Contract No. DAHC-15-73-C-0435.
04200	
04300	The views and conclusions in this document are those of the authors and 
04400	should not be interpreted as necessarily representing the official policies,
04500	either expressed or implied, of the
04600	funding agencies.
04700	
04800	Reproduced in the USA. Available from the National Technical Information
04900	Service, Springfield, Virginia 22151.%*
05000	.END
05100	
     

00100	.ADJUST COMPACT
00200	.SECNAME←NULL
00300	.SSECNAME←NULL
00400	.SSSNUM←NULL
00500	.INSERT CONTENTS
00600	.PORTION BODY;
00700	.COUNT PAGE FROM 1 TO 999 PRINTING ⊂PAGE⊃;
00800	.EVEN HEADING(Page {PAGE!},{SSECNAME},{SSSNUM});
00900	.ODD HEADING({SSSNUM},{SSECNAME},Page {PAGE!});
01000	.NEXT PAGE
     

00100	.REQUIRE "MINTRO.PUB" SOURCE_FILE; <<MEMO25(2) Introduction>>
00200	.REQUIRE "MGOALS.PUB" SOURCE_FILE; <<MEMO25(3:6) Goals>>
00300	.REQUIRE "MSYSOL.PUB" SOURCE_FILE; <<MEMO25(7),61(2) System outline>>
00400	.REQUIRE "MUSER.PUB"  SOURCE_FILE; <<MEMO8(2) User features>>
00500	.REQUIRE "MDATST.PUB" SOURCE_FILE; <<MEMO61(8:11) Data structures>>
00600	.REQUIRE "MMOTNS.PUB" SOURCE_FILE; <<MEMO61(12:17) Motion specs>>
00700	.REQUIRE "MGRAPH.PUB" SOURCE_FILE; <<graph structures (subsection) >>
00800	.REQUIRE "MCTRST.PUB" SOURCE_FILE; <<MEMO61(3:7) Control structures>>
00900	.REQUIRE "MCTCST.PUB" SOURCE_FILE; <<MEMO61(18,19),63(2:7) Compile time constructs>>
01000	.REQUIRE "MLIBRT.PUB" SOURCE_FILE; <<MEMO63(8) Library routines>>
01100	.REQUIRE "MVHL.PUB"   SOURCE_FILE; <<MEMO64 Very high level>>
01200	.REQUIRE "MRUNTM.PUB" SOURCE_FILE; <<MEMO7 Runtime overview>>
01300	.REQUIRE "MEXTEN.PUB" SOURCE_FILE; <<MEMO9 Extensions>>
01400	.REQUIRE "MBIB.PUB"   SOURCE_FILE; <<MEMO10 Bibliography>>
01500	
01600	.PORTION APPENDIX
01700	.SECID←"APPENDIX";
01800	.SEND CONTENTS ⊂
01900	
02000	APPENDICES
02100	.⊃
02200	.COUNT SECTION FROM 1 TO 99 PRINTING  "I";
02300	.COUNT SUBSEC FROM 0 TO 9 IN SECTION PRINTING "!.1";
02400	.COUNT SUBSUBSEC FROM 0 TO 99 IN SUBSEC PRINTING "!.1";
02500	.REQUIRE "MDIALG.PUB" SOURCE_FILE; <<MEMO8(3) Dialog>>
02600	.REQUIRE "MXMPLS.PUB" SOURCE_FILE; <<XMPLES Examples:  appendix>>
02700	.REQUIRE "MRTAPP.PUB" SOURCE_FILE; <<RUNTIM Runtime details:  appendix>>
02800	
     

00100	.PORTION CONTENTS
00200	.COUNT PAGE FROM 2 PRINTING "i";
00300	.SSECNAME←"FOREWORD";
00400	.SSSNUM ← NULL;
00500	.SECNAME←"FOREWORD";
00600	.NEXT PAGE
00700		This document describes  the new hand  language, AL.   It is
00800	not intended to be a final language specification or a user's manual.
00900	Rather, it is  a working document presenting a number of  related
01000	ideas concerning a  system for programmable automation.   These ideas
01100	cover  a broad range  of topics: arm servoing,   parallel processing,
01200	assembly world modelling,  strategists, and language design.  We have
01300	tried to combine these into  a coherent system.  However, as you read
01400	this document you  will notice  that some topics  have been  explored
01500	more than others, some explanations contain more detail than others,
01600	and  some questions  are left  unanswered.   Various portions  of the
01700	system have already been implemented. 
01800	
01900		Interested persons unfamiliar with the background for this work
02000	will find it useful to read %4The Use of Sensory Feedback in a 
02100	Programmable Assembly System%* [Bolles and Paul].
02200	
02300		We would  like to thank  those people  who have  made
02400	numerous suggestions  and have helped implement  various parts of the
02500	system.   
02600	In particular, we  would to  thank Bertrand  Meyer, who  
02700	implemented  the   scanner  and  parser,   Botond Eross,   who  is
02800	implementing  the PDP11  runtime monitor,
02900	Bruce Baumgart, who assisted with the illustrations,
03000	and Larry Tesler, whose document preparation program PUB was used
03100	to prepare this paper.
03200	We also wish to thank D. Whitney, J. Nevins, and D. Killoran of
03300	Draper Labs and W. Park of Stanford Research Institute for their
03400	helpful criticisms and suggestions.
03500	
03600	
03700	During the period in which the work reported here was performed,
03800	Russ Taylor was supported in part by a grant from the Alcoa Foundation,
03900	Raphael Finkel was supported by a NSF fellowship, and Robert Bolles
04000	was supported in part by the Hertz Foundation.  We would like to
04100	thank all these agencies for their kind assistance.
04200	
04300		The English language has no genderless personal pronoun; without
04400	any implication of sexism we use arbitrary forms in its place.
04500	
04600	
04700	.SSECNAME←"TABLE OF CONTENTS";
04800	.SECNAME←"TABLE OF CONTENTS";
04900	.NEXT PAGE
05000	.INDENT 0
05100	.NOFILL
05200	.TURN ON "∞→"
05300	CHAPTER →PAGE
05400	.RECEIVE
05500